最近在面試時,被問到 Activity 跟 Fragment 兩者之間有什麼差異?
我一時無法直接點出來,就先向考官解釋它們各自的定義。
那麼,Fragment 到底在幫我們做些什麼事?
A Fragment represents a reusable portion of your app's UI. A fragment defines and manages its own layout, has its own lifecycle, and can handle its own input events. Fragments cannot live on their own--they must be hosted by an activity or another fragment. The fragment’s view hierarchy becomes part of, or attaches to, the host’s view hierarchy.
Fragment(片段)呈現的是應用程式 UI 可重複使用的部份。Fragment 定義及管理它自身的佈局,有自己的生命週期,並能處理它本身的輸入事件。Fragments 不能獨自存在,它們必須被 1 個 Activity 或 另 1 個 Fragment 持有。Fragment 的視圖層級成為持有者視圖層級的一部份,或附加在持有者視圖層級身上。
Fragment 讓我們可以將 UI 劃為分散的區塊。因此將模組化、可重複使用的特性帶入 Activity 的 UI。
Activity 是在應用程式的使用者介面放置全域(global)元素的理想地方。像是繪製導航列。
Fragment 更適合定義、管理單一畫面或畫面一部份的 UI。
[圖1] 在不同螢幕尺寸上的兩個不同畫面版本。圖片左側,大螢幕包含了由 Activity 控制的導航列繪製,以及由 Fragment 控制的格狀清單(grid list)。圖片右側,小螢幕包含了由 Activity 控制的底部導航列,以及由 Fragment 控制的線性清單(linear list)。
參考資料